【Python+Django】一个简单停车场管理系统的设计及代码实现 | 您所在的位置:网站首页 › django session登录 › 【Python+Django】一个简单停车场管理系统的设计及代码实现 |
本文利用Python的Django框架从0开始最终实现一个简单的Web 停车场管理系统。 目前一个典型的停车场管理包含如下几个功能: 1、扫描车牌识别自动出入场 2、会员管理(充值,提醒充值。。等) 3、收费(如果是有效期内的会员就免费) 为了实现上面几个功能,我们先简单的做下数据库和页面的设计。 数据库设计数据库的话可以设计以下几个: 会员表: 车牌,姓名,手机号,会员起始日期,会员截止日期 用于会员的到期提醒,充值等管理出入库记录表: 车牌,入场日期时间,出场日期时间,付款日期时间,付款金额 用于出入场记录及收费管理简单对系统做一个页面的结构划分 初步整理了需求后,我们直接开始撸代码。 创建项目django-admin startproject DjangoPark2023 进入项目文件夹 cd DjangoPark2023 创建虚拟环境python -m venv venv 进入虚拟环境 venv\Scripts\activate.bat 在虚拟环境中安装Django pip install django Django框架下的核心的模型和视图都需要在app中实现,我们简单点就创建一个app名为app01,实际项目中可以根据模块创建多个app。 python manage.py startapp app01 在文件 DjangoPark2023/settings.py 中更新代码如下 # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01' #增加此项 ]截止到目前的文件结构 根据我们前面的数据库 app01/models.py from django.db import models # Create your models here. class vip_uer(models.Model): name = models.CharField(max_length=32, verbose_name='姓名') carnum = models.CharField(max_length=32, unique=True, verbose_name='车牌号') phone = models.CharField(max_length=32, verbose_name='手机号') begintime = models.DateTimeField(auto_now=False, auto_now_add=False) endtime = models.DateTimeField(auto_now=False, auto_now_add=False) class car_record(models.Model): carnum = models.CharField(max_length=32, verbose_name='车牌号') intime = models.DateTimeField(auto_now=False, auto_now_add=False, verbose_name='入场时间') outtime = models.DateTimeField(auto_now=False, auto_now_add=False, verbose_name='出场时间', null=True, blank=True) paytime = models.DateTimeField(auto_now=False, auto_now_add=False ,verbose_name='收费时间', null=True, blank=True) amount = models.IntegerField(verbose_name='收费金额', null=True, blank=True)安装连接MySQL的包pip install pymysql 引入pymysql DjangoPark2023/__init__.py import pymysql pymysql.install_as_MySQLdb()MySQL的安装就不详细讲了,大家自行安装。 手工创建一个数据库,名字为:djangopark2023 连接MySQL数据库配置 DjangoPark2023/settings.py # Database # https://docs.djangoproject.com/en/4.1/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'djangopark2023', # 数据库名称 'HOST': '127.0.0.1', # 数据库地址,本机 ip 地址 127.0.0.1 'PORT': 3306, # 端口 'USER': 'root', # 数据库用户名 'PASSWORD': '123456', # 数据库密码 } } 迁移模型python manage.py makemigrations python manage.py migrate 数据表创建成功 python manage.py createsuperuser 用户名:admin 密码:123456 python manage.py runserver http://127.0.0.1:8000/ 输入后台网址看下:http://127.0.0.1:8000/admin/ 登录后没有显示自定义的模型,还需要注册模型到后台。 app01/admin.py from django.contrib import admin # Register your models here. # 别忘了导入models from app01.models import vip_uer # 注册模型到admin中 admin.site.register(vip_uer)添加一条VIP记录 会员充值: 充值时选择充值天数,30天,90天,180天,360天,或自定义 如果车牌不存在,则添加一条会员记录,起始时间为现在,截止时间为现在+套餐天数。 如果车牌已存在,没过期,则截止时间 加上 套餐天数,如果过期了,则更新起始时间为现在,截止时间为现在+套餐天数。 前端网页模板新建文件夹templates用于管理模板文件。 然后配置下模板位置 import os *... TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], # 添加此项 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]接着在templates创建模板文件:这里我们未来快速实现功能,暂时先直接在线引入bootstrap静态文件。 templates/recharge.html 会员充值 {% csrf_token %} 车牌号 充值天数 提交充值app01/views.py from django.http import HttpResponse from django.shortcuts import render import datetime from app01 import models from .models import vip_uer,car_record # Create your views here. def Recharge(request): if requesthod == 'POST': chargedays = int( request.POST.get('chargedays') ) carnum = request.POST.get('carnum') print(chargedays) days = datetime.timedelta(days=chargedays) if models.vip_uer.objects.filter(carnum=carnum): vip = vip_uer.objects.get(carnum=carnum) endtime = vip.endtime + days print(vip.endtime) models.vip_uer.objects.update(carnum=carnum, endtime = endtime) else: begtime = datetime.datetime.now() endtime = begtime + days models.vip_uer.objects.create(carnum=carnum, begintime = begtime ,endtime=endtime) return HttpResponse("充值成功!") else: return render(request, 'recharge.html')路由器配置DjangoPark2023/urls.py 中更新如下代码,配置对应的路由规则。 from django.contrib import admin from django.urls import path from app01 import views urlpatterns = [ path('admin/', admin.site.urls), path('recharge/', views.Recharge), #添加如下项 ]重新运行服务器 输入地址:http://127.0.0.1:8000/recharge/ 输入车牌号和充值天数后提交充值后。 基础的架构打好了,接下来就是各种功能视图和模板的实现了,有时间再继续更! |
CopyRight 2018-2019 实验室设备网 版权所有 |